In [15]:
f(x)=x+1
Out[15]:
In [16]:
f(2)
Out[16]:
In [1]:
g(x,y)=[x*y+1, x-y]
Out[1]:
In [2]:
g(1,2)
Out[2]:
Il est possible d'utiliser begin-end ou ( ; ) pour délimiter la fonction la dernière valeur calculée est retournée
In [27]:
h(x)=begin
y=2
x+y
end
Out[27]:
In [1]:
h(3)
In [2]:
h(x)=(y=2;x+y) # equivallent à la première écriture
Out[2]:
In [3]:
h(3)
Out[3]:
In [3]:
function H(x,y)
z=x+y;
z^2/(abs(x)+1)
end
Out[3]:
In [4]:
H(1,2)
Out[4]:
L'usage de return pour fixer la sortie
In [5]:
function Choix(x)
if x>0
return "Positif"
else
return "Négatif"
end
end
Out[5]:
In [33]:
txt=Choix(3)
Out[33]:
In [35]:
x->x^2
Out[35]:
In [38]:
G=x->sqrt(x)
Out[38]:
In [39]:
G(1)
Out[39]:
In [14]:
function multi_output(x,y)
return x+y, x-y
end
Out[14]:
In [15]:
a=multi_output(1,2) # un seul argument de sortie qui contient un tuple
Out[15]:
In [16]:
typeof(a)
Out[16]:
In [18]:
a[1]
Out[18]:
In [19]:
a[2]
Out[19]:
In [21]:
a , b =multi_output(1,2) # assignation aux 2 arguments de sortie
Out[21]:
In [54]:
a
Out[54]:
In [22]:
b
Out[22]:
In [23]:
a=1
f(x)=a+x
f(1)
Out[23]:
In [29]:
a=1
function ff(x)
x+a
end
ff(1)
Out[29]:
In [30]:
a=1
function ff(x)
x+a # on utilise a défini en dehors de la fonction
a=2 # on tente de changer la valeur de a... error !
end
ff(1)
In [31]:
a=1
function ff(x)
a=2
x+a
end
ff(1)
Out[31]:
In [32]:
a
Out[32]:
Donc par défaut une variable définie est connue et utilisable par toute fonction appellée (de même à l'intérieure d'une fonction).
Si on redéfinie localement dans la fonction la variable alors "elle écrase localement" la dite variable et en sortie de fonction rien n'est modifié.
Attention à l'utilisation dans la fonction d'une variable extérieure puis d'affecter une valeur à cette variable...
In [43]:
f(x)=x^2+1
f(1:5) # il aurait fallu définir f(x)=x.^2+1
La fonction map
permet de palier à ce manquement
In [46]:
map(f,1:5)
Out[46]:
In [50]:
map(f,[1 2; 3 4])
Out[50]:
In [51]:
g(x,y)=x+y
map(g,0:3,1:4)
Out[51]:
In [52]:
map(g,[1 2;3 4],[2 3;4 5])
Out[52]: